home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / BUSINESS / STATA3.LZH / PROGRAMS.TUT < prev    next >
Text File  |  1988-08-26  |  5KB  |  157 lines

  1. set output error
  2. set display page 23
  3. set more 1
  4. #delimit ;
  5.  
  6. di _n(5) in wh
  7. "  ___  ____  ____  ____  ____ tm" _n
  8. " /__    /   ____/   /   ____/" _n
  9. "___/   /   /___/   /   /___/    Writing programs in Stata" _n
  10. "---------------------------------------------------------"
  11. _n(2) ;
  12.  
  13. di in gr
  14. "In addition to all of its other features, Stata is programmable.  Before ex-"
  15. _n
  16. "ploring Stata's programming language, let's emphsize those other features." _n
  17. "You do not have to write programs to analyze data.  The programming langugage"
  18. _n
  19. "is there for those who want or need it, but quite honestly, the majority of"
  20. _n
  21. "Stata users never write a program nor learn Stata's programming language."
  22. _n(2)
  23. "Among the group of users who do use Stata's programming language, most never"
  24. _n
  25. "use its most advanced features.  They write short, one- or two-line programs"
  26. _n
  27. "that making using Stata interactively more convenient.  Stata programs do not"
  28. _n
  29. "have to be long and involved, although they can be.  When you write a program"
  30. _n
  31. "in Stata, you give it a name.  That name becomes a new command that you use"
  32. _n
  33. "in the same way as you use any of Stata's built-in commands." _n ;
  34. di in gr
  35. "Finally, some users do write long and involved programs.  They do this because"
  36. _n
  37. "there is some feature Stata is missing that is important in their work, or "
  38. "they" _n
  39. "do this because they want to automate a process that other users will run" _n
  40. "on a regular basis." _n ;
  41.  
  42. #delimit cr
  43. mac def path
  44. capture run nullfile.tut
  45. if _rc {
  46.     mac def path "\stata\"
  47.     capture run %path`nullfile.tut
  48.     if _rc {
  49.         mac def path "/usr/stata/"
  50.         capture run %path`nullfile.tut
  51.         if _rc {
  52.             #delimit ;
  53.             di in red
  54. "I cannot find the other tutorial files.  I have looked in the current" _n
  55. "directory and in \stata (DOS) or /usr/stata (Unix).  Is Stata installed" _n
  56. "correctly?" _n(2)
  57. "In any case, I cannot run the tutorial." ;
  58.             #delimit cr
  59.             exit
  60.         }
  61.     }
  62. }
  63. macro define F5 "do %path`contents.tut;"
  64. macro define F6 "do %path`programs.tut;"
  65. #delimit ;
  66. drop _all ;
  67. label drop _all ;
  68.  
  69. set more 0 ; more ; set more 1 ;
  70.  
  71. di _n (2) in wh
  72. "Argument passing" _n
  73. "----------------" _n(2) ;
  74.  
  75. di in gr
  76. "Before you can begin programming in Stata, you must undertand how arguments"
  77. _n
  78. "are passed.  They are passed through macros and you can learn about them by"
  79. _n
  80. "typing 'help macros' at the conclusion of this tutorial.  In the meantime, it"
  81. _n
  82. "is enough to know that the first thing the user types after the program's name"
  83. _n
  84. "is referred to as " in wh "%" "_1" in gr ", the second thing as " in wh
  85. "%" "_2" in gr ", and so on.  This will make" _n
  86. "sense shortly." _n(2)
  87. "Let's assume that you have a data set were missing values are recorded as -9."
  88. _n
  89. "You wish to change all the -9's to Stata's missing value, which means you must"
  90. _n
  91. "type:" _n ;
  92. di in wh _col(8) "replace " in gr "varname"
  93. in wh "=. if " in gr "varname" in wh "==-9" _n(2)
  94. in gr
  95. "If you have ten such variables, typing that command ten times will be tedious."
  96. _n(3) ;
  97. set more 0 ; more ; set more 1 ;
  98.  
  99. di _n(2) in wh _dup(79) "-" _n in gr
  100. "A program provides the solution:" _n(2)
  101. _col(8) in wh
  102. "program define fix" _n _col(8)
  103. "  replace %" "_1=. if %" "_1===9" _n _col(8)
  104. "end" _n(2) in gr
  105. "Typing this program into Stata creates a new command called "
  106. in wh "fix" in gr ".  Once the pro-" _n
  107. "gram has been defined, if you type '" in wh "fix var1" in gr
  108. "', Stata executes the command" _n
  109. "'" in wh "replace var1=. if var1==9" in gr "'.  Let's try it:" _n
  110. in wh _dup(79) "-" _n(2)
  111. ". program define fix" _n
  112. in bl " 1" in wh ". replace %" "_1=. if %" "_1==9" _n
  113. in bl " 2" in wh ". end" _n ;
  114. capture program drop fix ;
  115. program define fix ;
  116. replace %_1=. if %_1==-9;
  117. end ;
  118. di _n in wh _dup(79) "-" _n in gr
  119. "Now all we need is some data.  This tutorial is right now setting up data" _n
  120. "for us to try our command." _n
  121. in wh _dup(79) "-" _n(2)
  122. ". list" ;
  123. drop _all ;
  124. input x y z ;
  125. 1 4 -9 ;
  126. -9 3 3 ;
  127. 1 -9 2 ;
  128. 5 5 -9 ;
  129. end ;
  130. set more 0 ; more ; set more 1 ;
  131. noisily list ;
  132. di _n in wh ". fix x" ;
  133. noisily fix x ;
  134. di _n in wh ". fix y" ;
  135. noisily fix y ;
  136. di _n in wh ". fix z" ;
  137. noisily fix z ;
  138. di _n in wh ". list" ;
  139. set more 0 ; more ; set more 1 ;
  140. noisily list ;
  141.  
  142. di _n(2) in wh _dup(79) "-" _n in gr
  143. "It worked!  We have just written our first Stata program.  We could have made"
  144. _n
  145. "the program much fancier, but the majority of programs users write are no "
  146. "more" _n
  147. "complicated than " in wh "fix". _n
  148. _dup(79) "-" _n ;
  149. set more 0 ; more ; set more 1 ;
  150.  
  151. di _n(2) in wh _dup(79) "-" _n in gr
  152. "You can learn more about Stata's programming language from the on-line help" _n
  153. "files.
  154.  
  155.  
  156. exit ;
  157.